package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.Iterator;

import javax.swing.JOptionPane;



import presentation.EtudiantDialog;
import abstraction.Cours;
import abstraction.Etudiant;


/** controleur qui ajoute un étudiant
 * 
 * @author PICOSSON
 *
 */
public class ControlJButtonSaveEtudiant implements ActionListener {
	private Cours modele;
	private boolean creation;
	private EtudiantDialog parent;

	public ControlJButtonSaveEtudiant(EtudiantDialog parent, Cours modele,
			boolean creation) {
		this.modele = modele;
		this.parent = parent;
		this.creation = creation;
	}

	public void actionPerformed(ActionEvent e) {
		Etudiant n = new Etudiant(parent.getNom(),parent.getPrenom(),parent.getEmail());
		try {
			if(n.getNom().length() < 1)
				throw new Exception("Il faut un nom pour l'étudiant");
			
			if(n.getPrenom().length() < 1)
				throw new Exception("Il faut un prénom pour l'étudiant");
			
			if(n.getEmail().length() < 1)
				throw new Exception("Il faut une adresse mail pour l'étudiant");
			
			if(creation && this.modele.findEtudiant(n.getEmail()) != null)
				throw new Exception("Cette adresse email identifie déjà un étudiant.");
			
			modele.saveEtudiant(n, creation);
			modele.supprimerEtudiantDansGroupe(n.getEmail());
			Iterator<Integer> it = parent.getSelectedGroupes().keySet().iterator();
			while(it.hasNext()){
				modele.ajouterEtudiantDansGroupe(parent.getSelectedGroupes().get(it.next()),  n.getEmail());
			}
			parent.setVisible(false); 
		} catch (Exception e1) {
			JOptionPane.showMessageDialog(parent, "On ne peut pas! ", "Erreur!",
					JOptionPane.ERROR_MESSAGE);
			e1.printStackTrace();
		}

	}

}


